package file;

import java.io.*;

/**
 * FileInputS() 读文本方法
 */



public class FileInputS {
    public static void main(String[] args) {
        /**
         * 法一：一个字符一个字符的读取文本内容
         */
        /*File file = new File("e:\\file实验.txt");
        try {
            FileInputS fis = new FileInputS(file);
            int c = fis.read();
            while (c != -1) {
                System.out.print((char) c);
                c = fis.read();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }*/

        /**
         * 法二：用数组读取文本内容
         */
        /*File file=new File("e:\\file实验.txt");
        try {
            FileInputS fis=new FileInputS(file);
            byte[] tmp=new byte[10];
            int c=fis.read(tmp);//每次读取10个字符，可改
            while (c!=-1){
                for (int i=0;i<c;i++){
                    System.out.print((char) tmp[i]);
                }

                c=fis.read(tmp);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e){
            e.printStackTrace();
        }*/


        /**
         * 读取e:\web\UML、模式与Java 第三版.pdf文件，然后将其复制到其他盘（自己选）
         * 法一：
         */
        File file = new File("e:\\web\\UML、模式与Java 第三版.pdf");
        File file1 = new File("d:\\UML、模式与Java 第三版.pdf");
        try {
            FileInputStream fis = new FileInputStream(file);
            FileOutputStream fos = new FileOutputStream(file1);
            byte[] tmp = new byte[10240];
            int c = fis.read(tmp);//每次读取10240个字符，可改
            while (c != -1) {
                fos.write(tmp,0,c);//最后不一定时10240B，怕有剩余复制不尽，所有用c
                System.out.println("还剩"+fis.available()+"B");
                c = fis.read(tmp);
            }
             fis.close();fos.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

/**
 * 读取e:\web\UML、模式与Java 第三版.pdf文件，然后将其复制到其他盘（自己选）
 *    用BufferedInputStream、BufferedOutputStream实现文件的读取
 *    法二：
 */
        /*File file = new File("e:\\web\\UML、模式与Java 第三版.pdf");
        File file1 = new File("d:\\UML、模式与Java 第三版.pdf");
        try {
            java.io.FileInputStream fis = new java.io.FileInputStream(file);
            FileOutputStream fos = new FileOutputStream(file1);
            BufferedInputStream bis = new BufferedInputStream(fis);
            BufferedOutputStream bos = new BufferedOutputStream(fos);
            byte[] tmp = new byte[10240];
            int c = bis.read(tmp);//每次读取1024个字符，可改
            while (c != -1) {
                bos.write(tmp, 0, c);//最后不一定时10240B，怕有剩余复制不尽，所有用c
                System.out.println("还剩" + fis.available() + "B");
                c = bis.read(tmp);
            }
            bis.close();//关闭输出流
            bos.close();//关闭输入流
        } catch (Exception e) {
            e.printStackTrace();
        }*/
    }
}
